package com.lizi.textView;

import android.content.DialogInterface;
import android.os.Bundle;
import android.app.Activity;
import android.os.SystemClock;
import android.support.v7.app.AlertDialog;
import android.widget.TextView;
import android.view.View;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import android.widget.Button;
import android.widget.DatePicker;
import android.view.View.OnClickListener;
import android.app.DatePickerDialog;
import android.widget.Toast;


//主要思路：
// 1.设置显示当前日期；
// 2.写好OnDateSetListener类实例Datelistener的两个方法
// 3.基于本Context创建和显示组件
public class DatePickerDialogExample extends Activity {

	    //全局变量！！！！！！！！！！
	    private TextView showdate;
	    private Button setdate;
	    private int year;
	    private int month;
	    private int day;
        private int ryear;
        private int rmonth;
        private int rday;
	    

	    @Override
	    public void onCreate(Bundle savedInstanceState)
	    {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.main);
	        
	        showdate=(TextView) this.findViewById(R.id.showtime);
	        setdate=(Button) this.findViewById(R.id.setdate);

	        //1.初始化Calendar日历对象
	        Calendar c=Calendar.getInstance(Locale.CHINA);
            //2.获取！！当前日期！！Date对象！！
	        Date mydate=new Date();
            //3.为Calendar对象设置时间为当前日期
            c.setTime(mydate);

            //4.获取Calendar对象中的年月日
	        year=c.get(Calendar.YEAR); //获取Calendar对象中的年
	        month=c.get(Calendar.MONTH);//获取Calendar对象中的月
	        day=c.get(Calendar.DAY_OF_MONTH);//获取这个月的第几天
			ryear=c.get(Calendar.YEAR);
            rmonth=c.get(Calendar.MONTH);
            rday=c.get(Calendar.DAY_OF_MONTH);

            //5.显示**当前**的年月日到TextView
	        showdate.setText("当前日期:"+year+"-"+(month+1)+"-"+day);

            //逻辑理解时候先看下面的Datelistener对象创建和OnDateSetListener方法
	        //添加单击事件--设置日期
	        setdate.setOnClickListener(new OnClickListener(){
	            
	            @Override
	            public void onClick(View v)
	            {
					//1.创建DatePickerDialog对象
	                DatePickerDialog my_datePickerDialog=new DatePickerDialog(DatePickerDialogExample.this,Datelistener,year,month,day);
//					my_datePickerDialog.getDatePicker().setMaxDate(new Date().getTime());//让datapickdialog超过今天的日期不能选（方案2）
                    //2.显示DatePickerDialog组件
                    my_datePickerDialog.show();
	            }
	        });    
	        
	    }

	    private DatePickerDialog.OnDateSetListener Datelistener=new DatePickerDialog.OnDateSetListener()
	    {

            //当DatePickerDialog组件日期被重置时，会执行 onDateSet()
            //我们在这里修改 全局变量年月日的值并将其显示
	        @Override
	        public void onDateSet(DatePicker v, int y, int m,int d) {
				boolean condition1 = y>ryear;
				boolean condition2 = y<=ryear && m>rmonth;
				boolean condition3 = y<=ryear && m<=rmonth && d>rday;
				if (condition1||condition2||condition3){
					Toast.makeText(DatePickerDialogExample.this,"日期超过规定范围",Toast.LENGTH_SHORT).show();
				}else{
					//修改year、month、day的变量值，以便以后单击按钮时，DatePickerDialog上显示上一次修改后的值
					year=y;
					month=m;
					day=d;
					//更新日期
					updateDate();
				}
	        }
	        //当DatePickerDialog关闭时，更新日期显示
	        private void updateDate()
	        {
				//在TextView上显示日期
	            showdate.setText("当前日期："+year+"-"+(month+1)+"-"+day);
	        }
	    };


}



//让datapickdialog超过今天的日期不能选参考文档：
// 参考文档：https://blog.csdn.net/shangxinlei88/article/details/44781999
//
//The following is a false attempt
//
//            ryear=c.get(Calendar.YEAR);
//            rmonth=c.get(Calendar.MONTH);
//            rday=c.get(Calendar.DAY_OF_MONTH);
//
//				boolean condition1 = year>ryear;
//				boolean condition2 = year<=ryear && month>rmonth;
//				boolean condition3 = year<=ryear && month<=rmonth && day>rday;
//				if(condition1||condition2||condition3){
//					AlertDialog.Builder builder = new AlertDialog.Builder(DatePickerDialogExample.this);
//					builder.setTitle("设置出错了哈~");
//					builder.setMessage("我们规定了超过今天的日期不能选哈,请关闭对话框然后重试哦~");
//					builder.setCancelable(false);
//					builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
//						@Override
//						public void onClick(DialogInterface dialog, int which) {
//						}
//					});
//				}